Постройте треугольник по двум
сторонам и углу между ними.
Вход. Три действительных числа – длины двух сторон треугольника и
величину угла между ними в градусах. Длины сторон – положительные числа, не превосходящие
104, угол – положительное число меньшее 180.
Выход. Выведите 6 действительных чисел – координаты вершин
какого-нибудь треугольника соответствующего входным данным с точностью не менее
6 десятичных знаков.
Пример входа |
Пример выхода |
10 5 60 |
0 0 10.0 0 2.5000000000 4.3301270189 |
геометрия
Пусть A, B, C –
три вершины треугольника, BC = a, AC
= b. Расположим начало системы
координат (0, 0) в точке С, ось абсцисс направим вдоль вектора CB. Тогда точка B
имеет координаты (a, 0).
Проведем высоту
AK. Из треугольника CAK: AK = AC sin φ, CK = AC cos φ. Учитывая что AC = b, точка А будет имеет координаты (b cos φ, b sin φ).
Объявим константу π.
#define PI acos(-1.0)
Читаем входные данные.
scanf("%lf
%lf %lf",&a,&b,&fi);
Преобразуем угол fi в радианы.
fi = fi / 180 * PI;
Выводим координаты трех точек.
printf("%.6lf
%.6lf\n",0,0);
printf("%.6lf
%.6lf\n",a,0);
printf("%.6lf
%.6lf\n",b*cos(fi),b*sin(fi));
import java.util.*;
public class Main
{
static double[] kramer(double a1, double b1, double c1,
double a2, double b2, double c2)
{
double res[] = new double[2]; // x, y
double d = a1 * b2 - a2 * b1;
double dx = c1 * b2 - c2 * b1;
double dy = a1 * c2 - a2 * c1;
res[0] = dx / d;
res[1] = dy / d;
return res;
}
public static void
main(String []args)
{
Scanner con = new Scanner(System.in);
double a = con.nextDouble();
double b = con.nextDouble();
double fi = con.nextDouble();
fi = fi / 180 * Math.PI;
System.out.println("0 0");
System.out.println(a + " " + 0);
System.out.println(b *
Math.cos(fi) + " " + b * Math.sin(fi));
con.close();
}
}